package com.example.librarysystem.Controller;

import com.example.librarysystem.entity.BorrowRecord;
import com.example.librarysystem.repository.BorrowRecordRepository;
import com.example.librarysystem.service.IDGeneratorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController // 注解位置规范（类名上方）
@RequestMapping("/borrows") // 路径注解规范
public class BorrowRecordController {

    @Autowired // 依赖注入注解规范
    private BorrowRecordRepository borrowRecordRepository;

    @Autowired
    private IDGeneratorService idGeneratorService;

    /**
     * 借阅图书接口
     * @param isbn 图书ISBN
     * @param readerId 读者ID
     * @return 操作结果信息
     */
    @PostMapping // 明确接口功能（原代码正确）
    public ResponseEntity<String> borrowBook(
            @RequestParam String isbn, // 参数注解规范
            @RequestParam String readerId) {
        String borrowId = idGeneratorService.generateBorrowID();
        String result = borrowRecordRepository.borrowBook(borrowId, isbn, readerId);
        return ResponseEntity.status(HttpStatus.CREATED).body(result); // 显式设置HTTP状态码
    }

    /**
     * 归还图书接口
     * @param borrowId 借阅ID
     * @return 操作结果信息
     */
    @PutMapping // 明确接口功能（原代码正确）
    public ResponseEntity<String> returnBook(
            @RequestParam String borrowId) {
        String result = borrowRecordRepository.returnBook(borrowId);
        return ResponseEntity.ok(result); // 使用OK状态码
    }

    /**
     * 查询借阅记录接口
     * @param readerId 读者ID
     * @return 借阅记录列表
     */
    @GetMapping // 明确接口功能（原代码正确）
    public ResponseEntity<List<BorrowRecord>> getBorrowRecords(
            @RequestParam String readerId) {
        List<BorrowRecord> records = borrowRecordRepository.getBorrowRecords(readerId);
        return ResponseEntity.ok(records); // 使用OK状态码
    }
}